<?php

require_once('DataAccess.php');
require_once('Campus.php');

/**
Interface DAO de Unidade. Estes m�todos N�O devem ser chamados diretamente.
Ao inv�s disso devem ser chamados por m�todos da classe Unidade.
*/

class CampusDAO
{

      private $database;

      public function CampusDAO( )
      {
               $this->database = DataAccess::getConnection();
      }
      
      /**
      Insere um registro na tabela t_unidade.
      @unidade - Objeto do tipo Unidade com as informa��es que ser�o gravadas no banco de dados
      @return - Retorna TRUE caso a opera��o seja efetuada com sucesso ou FALSE caso contr�rio.
      */
      public function Salvar( $campus )
      {
      		$consulta = $this->database->Fetch("BEGIN");
		
			if ( $consulta )
    		{
      			$consulta = $this->database->Fetch(" INSERT INTO t_campus(nome, responsavel)
                                 						VALUES ('$campus->nome', '$campus->responsavel') ");
				
      			if( $consulta )
           		{
           			$consulta = $this->database->Fetch("COMMIT");
           			return TRUE;
           		}
           		else
           		{
          			$consulta = $this->database->Fetch("ROLLBACK");
           			return FALSE;
           		}
          
    		}
    		else
    		{
    			$consulta = $this->database->Fetch("ROLLBACK");
            	return FALSE;
    		};
      }

      /**
      Altera um registro na tabela t_unidade.
      @unidade - Objeto do tipo Unidade com as informa��es que ser�o alteradas no banco de dados
      @return - Retorna TRUE caso a opera��o seja efetuada com sucesso ou FALSE caso contr�rio.
      */
      public function Alterar( $campus )
      {
      		$consulta = $this->database->Fetch("BEGIN");
		
			if ( $consulta )
    		{
      			$consulta = $this->database->fetch("UPDATE t_campus SET 
               										nome='$campus->nome',  
               										responsavel='$campus->responsavel' 
               										WHERE ID = '$campus->id' ");
				if( $consulta )
           		{
           			$consulta = $this->database->Fetch("COMMIT");
           			return TRUE;
           		}
           		else
           		{
          			$consulta = $this->database->Fetch("ROLLBACK");
           			return FALSE;
           		}
          
    		}
    		else
    		{
    			$consulta = $this->database->Fetch("ROLLBACK");
            	return FALSE;
    		};
      }

      /**
      Exclui um registro da tabela t_unidade de chave-prim�ria $id.
      @id - Chave-prim�ria da unidade cadastrado no banco de dados
      @return - Retorna TRUE caso a opera��o seja efetuada com sucesso ou FALSE caso contr�rio.
      */
      public function Deletar( $id )
      {
      		$consulta = $this->database->Fetch("BEGIN");
		
			if ( $consulta )
    		{
            	$consulta = $this->database->Fetch(" DELETE FROM t_campus WHERE id = '$id' ");
               	
            	if( $consulta )
           		{
           			$consulta = $this->database->Fetch("COMMIT");
           			return TRUE;
           		}
           		else
           		{
          			$consulta = $this->database->Fetch("ROLLBACK");
           			return FALSE;
           		}
          
    		}
    		else
    		{
    			$consulta = $this->database->Fetch("ROLLBACK");
            	return FALSE;
    		};
      }

      /**
      Busca na tabela t_unidade pelo registro associado � chave-prim�ria $id.
      Caso um registro seja encontrado ser� criada uma inst�ncia de Unidade com os valores das colunas do registro em quest�o.
      @id - Chave-prim�ria da unidade cadastrado no banco de dados.
      @return - Retorna um objeto do tipo Unidade com os valores associados ao registro encontrado. Caso n�o encontre nenhum registro retorna FALSE.
      */
	public function Carregar( $id )
	{
		$consulta = $this->database->Fetch(" SELECT * FROM t_campus WHERE id = '$id' ");

		if( $consulta != FALSE && mysql_num_rows( $consulta ) > 0 )
		{
			$resultado = $this->database->getRow();
			$campus = Campus::ArrayParaObjetos( $resultado );
			return $campus[0];
		}
        else
        {
        	return FALSE;
        }
	}

    
	public function CarregarTodos()
	{
		$consulta = $this->database->Fetch(" SELECT * FROM t_campus ");
               
		if ( $consulta != FALSE && mysql_num_rows( $consulta ) > 0 )
		{
			$resultado = $this->database->getRow();
			$campi = Campus::ArrayParaObjetos( $resultado );
			return $campi;
		}
        else
        {
        	return FALSE;
        }
	}
	
   
      public function CarregarTodosMenos($campusId){
      	$consulta = $this->database->Fetch(" SELECT * FROM t_campus WHERE id <> $campusId ");
               
		if ( $consulta != FALSE && mysql_num_rows( $consulta ) > 0 )
		{
			$resultado = $this->database->getRow();
			$campi = Campus::ArrayParaObjetos( $resultado );
			return $campi;
		}
        else
        {
        	return FALSE;
        }	
      }

}
?>
